package com.skytech.tax.customsdatawarehouse.singlewindow.revokelist.resource;

import com.skytech.tax.customsdatawarehouse.singlewindow.revokelist.domain.service.RevokeListService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author Lianhong
 * @since 2021/11/9
 */
@RestController
@RequestMapping("/single-window/revoke-list")
public class RevokeListResource {

    @Resource
    private RevokeListService revokeListService;


    /**
     * 保存修撤单
     *
     * @param revokeList 修撤单
     */
    @PostMapping
    public String saveRevokeList(@RequestBody String revokeList) {
        return revokeListService.save(revokeList);
    }

    /**
     * 查询修撤单
     *
     * @param decModSeqNo 修撤单编号
     */
    @GetMapping("{decModSeqNo}")
    public String details(@PathVariable String decModSeqNo) {
        return revokeListService.details(decModSeqNo);
    }

    /**
     * 删除修撤单
     *
     * @param decModSeqNo 修撤单编号
     */
    @DeleteMapping("{decModSeqNo}")
    public void remove(@PathVariable String decModSeqNo) {
        revokeListService.remove(decModSeqNo);
    }

    /**
     * 判断是否存在修撤单
     *
     * @param decModSeqNo 修撤单编号
     * @return 是否存在
     */
    @GetMapping("{decModSeqNo}/exists")
    public boolean existsRevokeList(@PathVariable String decModSeqNo) {
        return revokeListService.exists(decModSeqNo);
    }

    /**
     * 判断是否存在修撤单
     *
     * @return decModSeqNo-01,decModSeqNo-02,...
     */
    @PostMapping("exists")
    public String existsRevokeList(@RequestBody List<String> decModSeqNos) {
        return revokeListService.existsRevokeList(decModSeqNos);
    }


    /**
     * 查询修撤单-申请表文件名
     *
     * @param decModSeqNo 修撤单编号
     * @return 阿里云存储文件名
     */
    @GetMapping("application/{decModSeqNo}/file")
    public String applicationFile(@PathVariable String decModSeqNo) {
        return revokeListService.applicationFile(decModSeqNo);
    }


    /**
     * 保存修撤单-申请表文件名
     *
     * @param decModSeqNo 修撤单编号
     * @param storedFile  存储文件名称
     */
    @PostMapping("application/{decModSeqNo}/file")
    public void saveApplicationFile(@PathVariable String decModSeqNo, @RequestBody String storedFile) {
        revokeListService.saveApplicationFile(decModSeqNo, storedFile);
    }

    /**
     * 修撤单-申请表文件是否已存储
     *
     * @param decModSeqNo 修撤单编号
     */
    @GetMapping("application/{decModSeqNo}/file/stored")
    public boolean applicationFileStored(@PathVariable String decModSeqNo) {
        return revokeListService.applicationFileStored(decModSeqNo);
    }

    /**
     * 查询修撤单-决定书文件名
     *
     * @param decModSeqNo 修撤单编号
     * @return 阿里云存储文件名
     */
    @GetMapping("decision/{decModSeqNo}/file")
    public String decisionFile(@PathVariable String decModSeqNo) {
        return revokeListService.decisionFile(decModSeqNo);
    }


    /**
     * 保存修撤单-决定书文件名
     *
     * @param decModSeqNo 修撤单编号
     * @param storedFile  存储文件名称
     */
    @PostMapping("decision/{decModSeqNo}/file")
    public void saveDecisionFile(@PathVariable String decModSeqNo, @RequestBody String storedFile) {
        revokeListService.saveDecisionFile(decModSeqNo, storedFile);
    }

    /**
     * 修撤单-决定书文件是否已存储
     *
     * @param decModSeqNo 修撤单编号
     */
    @GetMapping("decision/{decModSeqNo}/file/stored")
    public boolean decisionFileStored(@PathVariable String decModSeqNo) {
        return revokeListService.decisionFileStored(decModSeqNo);
    }

    /**
     * 查询修撤单-随附单据文件名
     *
     * @param attEdocId 随附单据ID
     * @return 阿里云存储文件名
     */
    @GetMapping("attached-doc/{attEdocId}/file")
    public String attachedDocFile(@PathVariable String attEdocId) {
        return revokeListService.attachedDocFile(attEdocId);
    }

    /**
     * 保存修撤单-随附单据文件名
     *
     * @param attEdocId 随附单据ID
     * @param storedFile  存储文件名称
     */
    @PostMapping("attached-doc/{attEdocId}/file")
    public void saveAttachedDocFile(@PathVariable String attEdocId, @RequestBody String storedFile) {
        revokeListService.saveAttachedDocFile(attEdocId, storedFile);
    }

    /**
     * 修撤单-随附单据文件是否已存储
     *
     * @param attEdocId 随附单据ID
     */
    @GetMapping("attached-doc/{attEdocId}/file/stored")
    public boolean attachedDocFileStored(@PathVariable String attEdocId) {
        return revokeListService.attachedDocFileStored(attEdocId);
    }

}
